\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Group sessions\n",
"\n",
"Several teaching assistants and assignment correctors\n",
"\n",
"Do you have an idea how to make this course better? Contact us! at in3110@simula.no"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## What we use higher level languages for...\n",
"\n",
"* creating efficient working (or problem solving) environments\n",
"* developing large-scale simulation software\n",
"* making flexible and user-friendly software\n",
"* we mostly use the Bash and Python languages\n",
"\n",
"\n",
"Video credit: Simulation of blood flow through an aneurysms (Kristian Valen-Sendstad et al)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## What we use higher level languages for...\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## This course teaches you the tools to become an effective programmer\n",
"\n",
" * **Problem**: you are not an expert (yet).\n",
" * Where to find detailed info, and how to understand it?\n",
" * How to program in a team?\n",
" * The **effective programmer**:\n",
" * navigates quickly in the jungle of README files, source code examples, web sites, ... and develops intuition for what to look for. \n",
" * knows the tools and best practices for collaborative programming.\n",
" * The **aim of the course** is to improve your practical problem-solving abilities.\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## This course teaches you how to become a practical problem solver\n",
"\n",
" * Scripting in general, but with most examples taken from scientific computing\n",
" * Find examples, online documentation and textbooks on demand\n",
" * Learn by doing \n",
" * Write robust, well-documented, and fast code \n",
" * Provide feedback and learn from fellow student's implementations \n",
" * **Have fun and work with useful things**"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## An outlook of the first lectures \n",
"\n",
" * Today: The **Git** version control system\n",
" * Next weeks: Review basic and advanced **Python** \n",
" * Following: survey of scientific tools and techniques in scientific Python (numpy, data analysis and visualization, web programming)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Required background (1): Programming\n",
"\n",
"* Wide range of backgrounds with respect to Python and general programming experience.\n",
"* Some Python programming knowledge is expected for IN3110/IN4110.\n",
"* Two Python lectures will review (basic and advanced) Python features. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Required background (2): Mathematics\n",
"\n",
"* Very little mathematics is needed to complete the course.\n",
"* Basic knowledge will make life easier:\n",
" * General functions, such as $f(x) = ax +b$, and how they are turned into computer code\n",
" * Standard mathematical functions such as $\\sin(x),\\cos(x)$, and exponential functions\n",
" * Simple matrix-vector operations\n",
"* A learn-on-demand strategy should work fine, as long as you do not panic at the sight of a mathematical expression."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"
Course organisation
\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"slideshow": {
"slide_type": "subslide"
},
"tags": []
},
"source": [
"## Lectures\n",
"\n",
"* Wednesdays, 12:15-14:00, OJD, Aud Simula\n",
"* As much as possible, lectures will be recorded and available on the [course website][]\n",
"* Lecture notes at https://uio-in3110.github.io will be fairly complete, up to the most recent lecture.\n",
"* We also have some past videos from previous years available in our [YouTube channel][]\n",
"\n",
"Relevant literature will be presented at every lecture. You must find the rest: manuals, textbooks, web search, etc.\n",
"Practicing your ability to find this information _is part of the course_.\n",
"\n",
"[course website]: https://www.uio.no/studier/emner/matnat/ifi/IN3110/h23\n",
"[YouTube channel]: https://youtube.com/channel/UCpOB3OcVNTqnIiXcageiv_A\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Group sessions and assignments (1)\n",
"\n",
"* Two types of assignments:\n",
" 1. Mandatory assignments (homework)\n",
" 2. Group session exercises (optional)\n",
"* Assignments, excercises, and deadlines are published on the [assignments page](https://pages.github.uio.no/IN3110/assignments/assignments/).\n",
"* First assignment published by Friday (25. August), deadline next Friday (1. September).\n",
"* 3-day extensions automatically granted via [online form](https://forms.gle/UpLTX6LeDpKNJuE77) (link is also on the course website).\n",
" Longer extensions should contact us at in3110@simula.no soon as possible for arrangements.\n",
"\n",
"\n",
"**Group sessions and exercises are the core of the course: problem solving is the focus**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Group sessions and assignments (2)\n",
"\n",
"__Mandatory assignments:__\n",
"\n",
"* Mix of short (1 week) and large (3 week) assignments\n",
"* Peer review conducted in group sessions\n",
"* **Must be solved individually**\n",
"* **Give points towards passing the course**\n",
" \n",
"__Group sessions:__\n",
"\n",
"* Can be used to work on exercises or on mandatory assignment\n",
"* Will offer (ungraded) peer review of assignments\n",
"* No strict requirement to show up in group classes, but useful to ask questions and discuss solutions"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## How to pass the course\n",
"\n",
"* **Pass/fail** course (no exam, no grades).\n",
"* Mandatory assignments and peer-review give points towards passing the course.\n",
"* **IN3110**: Max 110 points (plus some bonus points). Pass criteria: >=85 points.\n",
"* **IN4110**: Max 140 points (plus some bonus points). Pass criteria: >=110 points.\n",
" \n",
"There is no other difference between IN3110 and IN4110."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"\n",
"## Mandatory assignments are handed in using github.uio.no\n",
"\n",
" * Login to [github.uio.no](https://www.github.uio.no) **before Friday (in two days)** with your UiO username and password. This automatically creates your account.\n",
" * We created a **github organization called [IN3110](https://github.uio.no/IN3110)**.\n",
" * You should be added to this organization automatically if you are enrolled in IN3110 or IN4110.\n",
" * There, you find your **personal git repository IN3110-username** (same name for IN4110 students) where you need to upload the assignment solutions."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Software for this course\n",
"\n",
"* Git (see https://git-scm.com)\n",
"* Bash\n",
"* Python 3 \n",
"* C (GCC)\n",
"* Various Python packages\n",
" \n",
"See the course website for installation instructions.\n",
"\n",
"Important: **For compatibility reasons, it is recommended to test your assignment solutions on an IFI machine**"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Asking questions\n",
"\n",
"- We have a Q&A repo set up for questions about the course and assignments: https://github.uio.no/IN3110/Q-A/issues\n",
"- For private questions, contact your group teacher first, or you may email in3110@simula.no (we may repost anonymized answers on GitHub for other students' benefit if they are generally relevant)\n",
"- We have a mattermost channel for informal chat between students: https://mattermost.uio.no/ifi-undervisning/channels/sin3110 \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Why has the course been organized like this?\n",
"\n",
" * \"Problem solving\" is best learned by solving a large number of problems.\n",
" * With limited resources, this is the only way we can maintain the number of mandatory assignments.\n",
" * You learn from reading and inspecting each other's code.\n",
" * **Goal**: more flexible implementation, but which still allows a high volume of programming exercises.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Things to do in the first week\n",
"\n",
"1. Get your private git repo as described before.\n",
"2. Solve the [first assignment](https://www.uio.no/studier/emner/matnat/ifi/IN3110/h23/oppgaver.html) (will be posted Friday).\n",
"3. If you want, join the group sessions from next week."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
},
"livereveal": {
"scroll": true,
"start_slideshow_at": "selected",
"theme": "serif"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}